package com.library.service;

import com.library.entity.Book;
import java.util.List;
import java.util.Map;

/**
 * 图书服务接口
 * 定义图书管理的核心业务方法，包括增删改查等操作
 */
public interface BookService {

    /**
     * 新增图书
     * @param book 图书实体对象（包含ISBN、书名、作者等信息）
     * @return 新增成功返回true，失败返回false（如ISBN已存在）
     */
    boolean addBook(Book book);

    /**
     * 更新图书信息
     * @param book 包含更新信息的图书实体（必须包含id）
     * @return 更新成功返回true，失败返回false（如图书不存在或ISBN重复）
     */
    boolean updateBook(Book book);

    /**
     * 根据ID删除图书
     * @param id 图书ID
     * @return 删除成功返回true，失败返回false（如图书不存在）
     */
    boolean deleteBook(Long id);

    /**
     * 根据ID查询图书详情
     * @param id 图书ID
     * @return 图书实体对象，不存在则返回null
     */
    Book getBookById(Long id);

    /**
     * 按条件搜索图书
     * @param condition 搜索条件（支持书名、作者、ISBN等字段的模糊/精确查询）
     * @return 符合条件的图书列表
     */
    List<Book> getBookByCondition(Map<String, Object> condition);

    /**
     * 查询所有图书
     * @return 系统中所有图书的列表
     */
    List<Book> getAllBooks();
}